package com.sc.userspringboot.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.util.Date;
import java.util.List;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * <p>
 * 用户发布帖子主表
 * </p>
 *
 * @author user
 * @since 2025-09-19 06:25:46
 */
@Getter
@Setter
@TableName("posts")
@ToString
public class Posts {

    /**
     * 帖子唯一标识ID
     */
    @TableId(value = "post_id", type = IdType.AUTO)
    private Integer postId;

    /**
     * 发帖用户ID（关联用户表）
     */
    @TableField("user_id")
    private Integer userId;

    /**
     * 关联游戏ID（强制选择的游戏分类标签）
     */
    @TableField("game_id")
    private Integer gameId;

    /**
     * 帖子标题（如“原神3.8版本深渊通关攻略”）
     */
    @TableField("title")
    private String title;

    /**
     * 帖子文字内容（最多500字，超出截断）
     */
    @TableField("content")
    private String content;

    /**
     * 内容类型（1-图文，2-纯文字）
     */
    @TableField("content_type")
    private Byte contentType;

    /**
     * 可见权限（1-公开，2-仅粉丝可见）
     */
    @TableField("visibility")
    private Byte visibility;

    /**
     * 帖子点赞数（实时更新）
     */
    @TableField("like_count")
    private Integer likeCount;

    /**
     * 帖子评论数（实时更新）
     */
    @TableField("comment_count")
    private Integer commentCount;

    /**
     * 帖子收藏数（实时更新）
     */
    @TableField("collect_count")
    private Integer collectCount;

    /**
     * 发布时间
     */
    @TableField("publish_time")
    private Date publishTime;

    /**
     * 最后编辑时间（仅发布1小时内可修改，否则为NULL）
     */
    @TableField("edit_time")
    private Date editTime;

    /**
     * 是否为精华帖（0-否，1-是，管理员设置）
     */
    @TableField("is_essence")
    private Byte isEssence;

    /**
     * 是否删除（0-正常，1-已删除，逻辑删除）
     */
    @TableField("is_deleted")
    private Byte isDeleted;
    /**
     * 状态（0-正常，1-禁言，2-封号，3-违规，4-审核中）
     */
    @TableField("status")
    private Byte status;

    /**
     * 发帖用户信息
     */
    @TableField(exist = false)
    private Users user;

    /**
     * 关联游戏信息
     */
    @TableField(exist = false)
    private Games games;

    /**
     * 帖子图片列表
     */
    @TableField(exist = false)
    private List<PostImages> postImages;

    /**
     * 帖子话题标签列表
     */
    @TableField(exist = false)
    private List<PostTags> postTags;

    /**
     * 帖子评论列表
     */
    @TableField(exist = false)
    private List<Comments> comments;

    @TableField(exist = false)
    private Users author;
}
